package day03

object ClassDemo {
  def main(args: Array[String]): Unit = {
    val human = new Human
    println(human.fight)
    println(human.name)
    println(human.distance)
    human.fly
  }
}

/**
  * 特质
  */
trait Flyable{
  // 声明一个有值得字段
  val distance:Int =900

  // 声明一个没有实现的方法
  def fight:String

  // 声明一个实现的方法
  def fly:Unit={
    println("I can fly")
  }
}

/**
  * 抽象类
  */
abstract class Animal{
  // 声明一个没有值得字段
  val name:String

  // 声明一个没有实现的方法
  def run():String

  // 声明一个有实现的方法
  def climb:String ={
    "I can climb"
  }
}

class Human extends Animal with Flyable{
  val name: String = "李四"

  override def run(): String = "I can run"

  override def fight: String = "Don't fight"

  override def fly: Unit =  println("Override fly method")
}
